﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace PPE_gestion_commercial
{
    public partial class SuppProduit : Form
    {
        // Définition des variables pour la connexion avec SQL Server
        SqlConnection connex;
        SqlCommand cmd;
        SqlDataReader dr;
        SqlDataReader dr2;
        SqlDataReader dr3;
        SqlDataReader dr4;
        int idProd;
        private string strconn = "server=78.241.116.47;Network Library=DBMSSOCN; database=gestion; User Id=Gestion; Password=gestion";

        public static int id;
        public string typeRep;

        public SuppProduit(string type)
        {
            InitializeComponent();
            typeRep = type;
        }

        //Fontion pour vider les données contenues dans les textBoxs
        private void vider()
        {
            nomProdBox.Clear();
            catProdBox.Clear();
            descProdBox.Clear();
            prixProdBox.Clear();
            quantProdBox.Clear();
        }

        // Fonction qui s'exécute lors du lancement du Form
        private void Form8_Load(object sender, EventArgs e)
        {
            // Définition de la DataGridView : Nombre et Noms des colonnes
            dataGridView1.ColumnCount = 2;
            dataGridView1.Columns[0].Name = "Nom du Produit";
            dataGridView1.Columns[1].Name = "idprod";
            dataGridView1.Columns[1].Visible = false;


            // Connexion à la base
            connex = new SqlConnection();
            connex.ConnectionString = strconn;
            connex.Open();

            // On récupère les noms et catégorie des produits qui se trouvent dans la BDD
            string sql = "Select NomProduit, idProduit from produit";
            cmd = new SqlCommand(sql, connex);
            dr = cmd.ExecuteReader();
            int j = 0;

            // On remplit par une boucle la datagridview selon les colonnes
            while (dr.Read())
            {
                dataGridView1.RowCount = j + 1;
                for (int i = 0; i < dr.FieldCount; i++)
                {
                    dataGridView1.Rows[j].Cells[i].Value = dr[i].ToString();
                }
                j++;
            }

            // Fermeture du curseur
            dr.Close();
            // Fermeture de la connexion à la BDD
            connex.Close();
        }

        // Fonction quand on clique ou doubleclique sur un élément de la DatagridView
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            
            //Définition des variables
            int colonne = e.ColumnIndex;
            int ligne = e.RowIndex;
            string selection;
            string type ="";

            string nom = "";
            string cat = "";
            string descr = "";
            string prix = "";
            string quant = "";

            // Appel de la fonction qui vide les textBoxs
            vider();

            // Si la personne clique sur la première colone c'est de type NomProduit
            if (colonne == 0)
                type = "NomProduit";

            // On récupère la valeur de la case cliqué
            selection = this.dataGridView1.Rows[ligne].Cells[colonne].Value.ToString();

            // Connexion à la base
            connex = new SqlConnection();
            connex.ConnectionString = strconn;
            connex.Open();

            // On récupère les produits dans la BDD qui ont pour valeur, de type NomProduit, la valeur cliqué
            string sql2 = "Select * from produit where " + type + "= '" + selection.Replace("'", "''") + "'";
            cmd = new SqlCommand(sql2, connex);
            dr2 = cmd.ExecuteReader();

            // On remplit les variables avec une boucle
            while (dr2.Read())
            {
                idProd = Convert.ToInt16(dr2[0].ToString());
                nom = dr2[1].ToString();
                cat = dr2[2].ToString();
                descr = dr2[3].ToString();
                prix = dr2[4].ToString();
                quant = dr2[5].ToString();
            }

            // Fermeture du curseur
            dr2.Close();
            // Fermeture de la connexion à la BDD

            string sql3 = "Select nomType from typeProduit where nomType = '" + cat + "'";
            cmd = new SqlCommand(sql3, connex);
            dr4 = cmd.ExecuteReader();

            while (dr4.Read())
            {
                catProdBox.Text = dr4[0].ToString();
            }

            // Fermeture de la connexion à la BDD
            connex.Close();
            
            // On remplit les textBoxs avec les variables pré-remplies
            nomProdBox.Text = nom;
            descProdBox.Text = descr;
            prixProdBox.Text = prix;
            quantProdBox.Text = quant;
             
        }

        // Fonction qui s'exécute lorqu'on clique sur le bouton Supprimer
        private void button2_Click(object sender, EventArgs e)
        {
            // On définit le type de suppression pour l'envoyer dans la form de confirmation
            // ici C'est produit
            string type = "produit";
            Confirmation f9 = new Confirmation(type, "DELETE FROM produit where IdProduit=" + idProd);
            f9.Show();
        }

        // Fonction qui s'exécute si l'utilisateur a cliquer sur "Oui"
        private void suppProduit()
        {
         /*   
            // Connexion à la base
            connex = new SqlConnection();
            connex.ConnectionString = strconn;
            connex.Open();

            // Requête qui va supprimer le produit sélectionné dans la BDD
            string sql3 = "DELETE FROM produit where IdProduit=" + id;
            cmd = new SqlCommand(sql3, connex);
            dr3 = cmd.ExecuteReader();

            // Fermeture du curseur
            dr3.Close();
            // Fermeture de la connexion à la base
            connex.Close();

            //Affichage
            MessageBox.Show("Votre produit a été supprimé!");
          * */
             
        }
        
        private void supprimerToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SuppProduit f8 = new SuppProduit("");
            f8.Show();
            this.Close();
        }
        private void supprimerToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            SuppClient f7 = new SuppClient("");
            f7.Show();
            this.Close();
        }

        private void modifierToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            ModifClient f5 = new ModifClient();
            f5.Show();
            this.Close();
        }

        private void modifierToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ModifProduit f6 = new ModifProduit();
            f6.Show();
            this.Close();
        }
        private void ajouterToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AjoutProduit f4 = new AjoutProduit();
            f4.Show();
            this.Close();
        }

        private void ajouterToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            AjoutClient f2 = new AjoutClient();
            f2.Show();
            this.Close();
        }

    }
}
